import java.util.Calendar;

public class Ausgabe_all extends DB_Messungen implements i_Ausgabe_all
{
	//--------------Ausgabe kompletter Listen----------------
	public String ausgabe()
	{
		//Ausgabe
		String out="";
		
		for(int i = 0;i<super.db.size();i++)
		{
			out = out + "\n"+super.db.get(i).getall();
		}
		return out+"\n";
	}
	//--------------Ausgabe nach Messstation-----------------
	public String ausgabe(String Felder,String Parameter,int... Wert)
	{
		//Ausgabe
		String out= "";
		//Einzelnes Feld
		String [] Feld;
		//Parameteren
		if(Parameter.equals("Nr"))
		{
			for(int i=0;i<super.db.size();i++)
			{
				for(int a=0;a<Wert.length;a++)
				{
					if(db.get(i).getNummer() == Wert[a])
					{
						
							Feld = Felder.split(",");
							for(int j=0;j<Feld.length;j++)
							{
								if(Feld[j] == "Messwert_Bez")
								{
									out = out+" "+db.get(i).getMessungstyp();
								}else if (Feld[j].equals("Messwert"))
								{
									out = out+" "+db.get(i).getMess();
								}else if (Feld[j].equals("Einheit"))
								{
									out = out+" "+db.get(i).getEinheit();
								}else if (Feld[j] == "Datum")
								{
									out = out+" "+db.get(i).getDate();
								}else if (Feld[j].equals("Institut_Bez"))
								{
									out = out+" "+db.get(i).getInstitut_Bez();
								}else if (Feld[j].equals("Institut_Nr"))
								{
									out = out+" "+db.get(i).getNummer();
								}else if (Feld[j] == "")
									out = out +" "+db.get(i).getall();
								
								
							}
							out= out +"\n";
					}
				}
			}
		}
		//Messung
		else if(Parameter.equals("Mess"))
		{
			for(int i=0;i<db.size();i++)
			{
				for(int a=0;a<Wert.length;a++)
				{
					if(db.get(i).getMess() == new Double(Wert[a]))
					{
						Feld = Felder.split(",");
						for(int j= 0;j<Feld.length;j++)
						{
							if(Feld[j].equals("Messwert_Bez"))
							{
								out = out+" "+db.get(i).getMessungstyp();
							}else if (Feld[j].equals("Messwert"))
							{
								out = out+" "+db.get(i).getMess();
							}else if (Feld[j].equals("Einheit"))
							{
								out = out+" "+db.get(i).getEinheit();
							}else if (Feld[j].equals("Datum"))
							{
								out = out+" "+db.get(i).getDate();
							}else if (Feld[j].equals("Institut_Bez"))
							{
								out = out+" "+db.get(i).getInstitut_Bez();
							}else if (Feld[j].equals("Institut_Nr"))
							{
								out = out+" "+db.get(i).getNummer();
							}else if (Feld[j] == "")								
								out = out +" "+db.get(i).getall();
							
									
						}
						out= out +"\n";
					}
				}
			}
		}
		//von bis Mess
		else if(Parameter.equals("vb_Mess"))
		{
			int von = Wert[0];
			int bis = Wert[1];
			
			for(int i=0;i<db.size();i++)
			{
				if(db.get(i).getMess() >= new Double(von) && db.get(i).getMess() <= new Double(bis))
				{
					Feld = Felder.split(",");
					for(int j=0;j<Feld.length;j++)
					{
						if(Feld[j].equals("Messwert_Bez"))
						{
							out = out+" "+db.get(i).getMessungstyp();
						}else if (Feld[j].equals("Messwert"))
						{
							out = out+" "+db.get(i).getMess();
						}else if (Feld[j].equals("Einheit"))
						{
							out = out+" "+db.get(i).getEinheit();
						}else if (Feld[j].equals("Datum"))
						{
							out = out+" "+db.get(i).getDate();
						}else if (Feld[j].equals("Institut_Bez"))
						{
							out = out+" "+db.get(i).getInstitut_Bez();
						}else if (Feld[j].equals("Institut_Nr"))
						{
							out = out+" "+db.get(i).getNummer();
						}else if (Feld[j] == "")								
							out = out +" "+db.get(i).getall();
									
						
					}
					out= out +"\n";
				}
			}
		}
		//von bis Nummer
		else if(Parameter.equals("vb_Nr"))
		{
			int von = Wert[0];
			int bis = Wert[1];
			
			for(int i=0;i<db.size();i++)
			{
				if(db.get(i).getNummer() >= von && db.get(i).getNummer() <= bis)
				{
					
					Feld = Felder.split(",");
					for(int j=0;j<Feld.length;j++)
					{
						if(Feld[j].equals("Messwert_Bez"))
						{
							out = out+" "+db.get(i).getMessungstyp();
						}else if (Feld[j].equals("Messwert"))
						{
							
							out = out+" "+db.get(i).getMess();
						}else if (Feld[j].equals("Einheit"))
						{
							out = out+db.get(i).getEinheit();
						}else if (Feld[j].equals("Datum"))
						{
							out = out+" "+db.get(i).getDate();
						}else if (Feld[j].equals("Institut_Bez"))
						{
							out = out+" "+db.get(i).getInstitut_Bez();
						}else if (Feld[j].equals("Institut_Nr"))
						{
							out = out+" "+db.get(i).getNummer();
						}else if (Feld[j] == "")								
							out = out +" "+db.get(i).getall();
						
						
					}
					out= out +"\n";
				}
			}
		}
		else
			return "\nKonnte Eingabe nicht aufloesen\n";
		return out+"\n";
	}
	//--------------Ausgabe nach Parameter-------------------
	
	public String ausgabe(String Felder,String Parameter,String... Wert)
	{
		//Ausgabe
		String out="";
		
		//Einzelnes Feld
		String [] Feld;
		//Date
		if(Parameter.equals("Date"))
		{
			//von Datum
			Calendar v_d = create_Date_ob(Wert[0]);
			//Bis Datum
			Calendar b_d = create_Date_ob(Wert[1]);
			//Ueberpruefung ob valid_to < valid_from
			if(v_d.after(b_d))
			{
				return "\n"+"Failure: valid_to < valid_from"+"\n";
			}

			//String fuer Ausgabe zusammenfuegen
			for(int k=v_d.get(Calendar.YEAR);k<=b_d.get(Calendar.YEAR);k++)//Jahr
				for(int j=v_d.get(Calendar.MONTH);j<=b_d.get(Calendar.MONTH);j++)//Monat
					for(int i=v_d.get(Calendar.DAY_OF_MONTH);i<=b_d.get(Calendar.DAY_OF_MONTH);i++)//Tage
						for(int l=0;l<db.size();l++) //Datensaetze in db
						{
							if(db.get(l).getDay() == i && db.get(l).getMonth() == j && db.get(l).getYear() == k)
							{
								Feld = Felder.split(",");
								for(int z=0;z<Feld.length;z++)
								{
									if(Feld[z].equals("Messwert_Bez"))
									{
										out = out+" "+db.get(l).getMessungstyp();
									}else if (Feld[z].equals("Messwert"))
									{
										out = out+" "+db.get(l).getMess();
									}else if (Feld[z].equals("Einheit"))
									{
										out = out+" "+db.get(l).getEinheit();
									}else if (Feld[z].equals("Datum"))
									{
										out = out+" "+db.get(l).getDate();
									}else if (Feld[z].equals("Institut_Bez"))
									{
										out = out+" "+db.get(l).getInstitut_Bez();
									}else if (Feld[z].equals("Institut_Nr"))
									{
										out = out+" "+db.get(l).getNummer();
									}else if (Feld[z] == "")
										out = out +" "+db.get(l).getall();
										
									
								}
								out= out +"\n";
							}
						}
		}
		else if(Parameter.equals("Einheit"))
		{
			for(int i=0;i<db.size();i++)
			{
				for(int a=0;a<Wert.length;a++)
				{
					if(db.get(i).getEinheit().equals(Wert[a]))
					{
						Feld = Felder.split(",");
						for(int z=0;z<Feld.length;z++)
						{
							if(Feld[z].equals("Messwert_Bez"))
							{
								out = out+" "+db.get(i).getMessungstyp();
							}else if (Feld[z].equals("Messwert"))
							{
								out = out+" "+db.get(i).getMess();
							}else if (Feld[z].equals("Einheit"))
							{
								out = out+" "+db.get(i).getEinheit();
							}else if (Feld[z].equals("Datum"))
							{
								out = out+" "+db.get(i).getDate();
							}else if (Feld[z].equals("Institut_Bez"))
							{
								out = out+" "+db.get(i).getInstitut_Bez();
							}else if (Feld[z].equals("Institut_Nr"))
							{
								out = out+" "+db.get(i).getNummer();
							}else if (Feld[z] == "")
								out = out +" "+db.get(i).getall();
								
							
						}
						out= out +"\n";
					}
				}
			}
		}
		else if(Parameter.equals("Bez"))
		{
			for(int i=0;i<db.size();i++)
			{
				for(int a=0;a<Wert.length;a++)
				{
					if(db.get(i).getInstitut_Bez().equals(Wert[a]))
					{
						Feld = Felder.split(",");
						for(int z=0;z<Feld.length;z++)
						{
							if(Feld[z].equals("Messwert_Bez"))
							{
								out = out+" "+db.get(i).getMessungstyp();
							}else if (Feld[z] == "Messwert")
							{
								out = out+" "+db.get(i).getMess();
							}else if (Feld[z].equals("Einheit"))
							{
								out = out+" "+db.get(i).getEinheit();
							}else if (Feld[z].equals("Datum"))
							{
								out = out+" "+db.get(i).getDate();
							}else if (Feld[z].equals("Institut_Bez"))
							{
								out = out+" "+db.get(i).getInstitut_Bez();
							}else if (Feld[z] == "Institut_Nr")
							{
								out = out+" "+db.get(i).getNummer();
							}else if (Feld[z] == "")
								out = out +" "+db.get(i).getall();
								
							
						}
						out= out +"\n";
					}
				}
			}
		}
		return out+"\n";
	}
}

